﻿using Tibet.GUI.Contrato;
using Tibet.Entidades;
using Tibet.Logica.Comandos;
using Tibet.Logica.FabricaLogica;
using System;
using Tibet.Logica.Comandos.ComandosConfiguracion;
using Entidades;

namespace Tibet.GUI.Presentador
{
    /// <summary>
    /// Clase que maneja la lógica de la interfaz de usuario para el inicio de 
    /// sesión
    /// </summary>
    public class PresentadorInicioSesion
    {
        private IContratoInicioSesion _inicioSesion;

        /// <summary>
        /// Constructor de la clase
        /// </summary>
        /// <param name="inicioSesion">
        /// Datos de la página de inicio de sesión requeridos para iniciar una
        /// nueva sesión
        /// </param>
        public PresentadorInicioSesion( IContratoInicioSesion inicioSesion )
        {
            llenarSingleton();//agregar aqui
            _inicioSesion = inicioSesion;
           
        }

        //agregar void llenarSingleton
        private void llenarSingleton()
        {
            Comando ComandoConfig = FabricaComandoConfig.ObtenerComandoLeerConfig();
            ComandoConfig.Ejecutar();
        }

        /// <summary>
        /// Código a ejecutar cuando el usuario presiona el botón Ingresar
        /// para acceder al sistema
        /// </summary>
        public bool ClickIngresar()
        {
            Credencial credencial = new Credencial
                (_inicioSesion.NombreUsuario, _inicioSesion.Contrasenha);

            Comando comando = FabricaComandoCredencial.
                CrearComandoValidarCredencial(credencial);
            comando.Ejecutar();
            return comando.Flag;
        }

        /// <summary>
        /// Busca el id del usuario conectado
        /// </summary>
        /// <param name="nombreUsuario">
        /// Nombre de usuario del usuario conectado
        /// </param>
        /// <returns>Id del usuario conectado</returns>
        public int BuscarIdUsuarioConectado(string nombreUsuario)
        {
            Comando comando = FabricaComandoUsuario.
                CrearComandoBuscarUsuario(nombreUsuario);
            comando.Ejecutar();

            return comando.Usuario1.IdUsuario;
        }

        /// <summary>
        /// Busca el nombre del rol asociado al alias
        /// </summary>
        /// <param name="nombre"></param>
        /// <param name="clave"></param>
        /// <returns></returns>
        public string buscarnombrerol(string nombre)
        {
            Comando comando = FabricaComandoRol.CrearComandoBuscarNombreRol(nombre);
            comando.Ejecutar();

            return comando.Cadena;
        
        
        
        }

    }
}